//package atguigu.str;
//
//import com.alibaba.fastjson.JSONObject;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.collections4.CollectionUtils;
//import org.apache.commons.lang.StringUtils;
//
//import java.nio.charset.StandardCharsets;
//import java.util.*;
//
//@Slf4j
//public class StrTest {
//    public static void main(String[] args) {
////        String str = "TA2211080009190011010101";
////        String s = _getAcode(str);
////        System.out.println(s);
//
////        StrTest st = new StrTest();
////        try {
////            st.showException();
////        } catch (Exception e) {
////            e.printStackTrace();
////        }
//
////        log.info("{0},{1}","aaa",43435L);
////        log.info("接收String消息： {} {}","aaa",43435L);
////
////        String str = "com.midea.ext.model.testform.TestForm|com.midea.PartTestForm";
////        String substring = str.substring(str.lastIndexOf(".")+1);
////        System.out.println(substring);
//
//
//
////        Integer x = 20;
////        String hexString = Integer.toHexString(x);
////        System.out.println("0x"+hexString);
////        String binaryString = Integer.toBinaryString(x);
////        System.out.println(binaryString);
////        String octalString = Integer.toOctalString(x);
////        System.out.println(octalString);
////
////        String s = hexStr2BinStr("2b");
////        System.out.println(s);
////
////        String s1 = binStr2HexStr("11");
////        System.out.println(s1);
////
////        x = 0x45;
////
////
////        String binaryString1 = Integer.toBinaryString(x);
////        System.out.println(binaryString1);
////        x = 0b01000101;
////        String hexString1 = Integer.toHexString(x);
////        System.out.println(hexString1);
////        byte[] bytes = hexString1.getBytes(StandardCharsets.US_ASCII);
////        for (int i = 0; i < bytes.length; i++) {
////            System.out.println(bytes[i]);
////            System.out.println(bytes[i]);
////        }
//
////        String fullName = getFullName("杜兆麟(duzl1)");
////        System.out.println(fullName);
//
//        List<String> lst = new ArrayList<String>();
//        lst.add("室内侧干球温度");
//        lst.add("室内侧湿球温度");
//        lst.add("室外侧干球温度");
//        lst.add("室外侧湿球温度");
//        lst.add("室外相对湿度");
//        lst.add("系统压力");
//        lst.add("1#电压");
//        lst.add("1#电流");
//        lst.add("1#功率");
//        lst.add("1#功率因数");
//        lst.add("2#电压");
//        lst.add("2#电流");
//        lst.add("2#功率");
//        lst.add("2#功率因数");
//        lst.add("3#电压");
//        lst.add("3#电流");
//        lst.add("3#功率");
//        lst.add("3#功率因数");
//        lst.add("4#电压");
//        lst.add("4#电流");
//        lst.add("4#功率");
//        lst.add("4#功率因数");
//        lst.add("频率");
//
//        String jsonStr = "{\"室内侧干球温度\":\"30.78\",\"室内侧湿球温度\":\"19.59\",\"室外侧干球温度\":\"32.63\",\"室外侧湿球温度\":\"18.48\",\"室外相对湿度\":\"18.48\",\"系统压力1\":\"19.48\",\"系统压力2\":\"20.48\",\"系统压力3\":\"21.48\",\"系统压力4\":\"22.48\",\"系统压力5\":\"23.48\",\"系统压力6\":\"24.48\",\"系统压力7\":\"25.48\",\"系统压力8\":\"26.48\",\"系统压力9\":\"27.48\",\"系统压力10\":\"28.48\",\"系统压力11\":\"29.48\",\"系统压力12\":\"30.48\",\"1#电压Ⅰ\":\"31.48\",\"1#电压Ⅱ\":\"32.48\",\"1#电压Ⅲ\":\"33.48\",\"1#电压Σ\":\"34.48\",\"1#电流Ⅰ\":\"35.48\",\"1#电流Ⅱ\":\"36.48\",\"1#电流Ⅲ\":\"37.48\",\"1#电流Σ\":\"38.48\",\"1#功率Ⅰ\":\"39.48\",\"1#功率Ⅱ\":\"40.48\",\"1#功率Ⅲ\":\"41.48\",\"1#功率Σ\":\"42.48\",\"1#功率因数Ⅰ\":\"43.48\",\"1#功率因数Ⅱ\":\"44.48\",\"1#功率因数Ⅲ\":\"45.48\",\"1#功率因数Σ\":\"46.48\",\"2#电压Ⅰ\":\"47.48\",\"2#电压Ⅱ\":\"48.48\",\"2#电压Ⅲ\":\"49.48\",\"2#电压Σ\":\"50.48\",\"2#电流Ⅰ\":\"51.48\",\"2#电流Ⅱ\":\"52.48\",\"2#电流Ⅲ\":\"53.48\",\"2#电流Σ\":\"54.48\",\"2#功率Ⅰ\":\"55.48\",\"2#功率Ⅱ\":\"56.48\",\"2#功率Ⅲ\":\"57.48\",\"2#功率Σ\":\"58.48\",\"2#功率因数Ⅰ\":\"59.48\",\"2#功率因数Ⅱ\":\"60.48\",\"2#功率因数Ⅲ\":\"61.48\",\"2#功率因数Σ\":\"62.48\",\"3#电压Ⅰ\":\"63.48\",\"3#电压Ⅱ\":\"64.48\",\"3#电压Ⅲ\":\"65.48\",\"3#电压Σ\":\"66.48\",\"3#电流Ⅰ\":\"67.48\",\"3#电流Ⅱ\":\"68.48\",\"3#电流Ⅲ\":\"69.48\",\"3#电流Σ\":\"70.48\",\"3#功率Ⅰ\":\"71.48\",\"3#功率Ⅱ\":\"72.48\",\"3#功率Ⅲ\":\"73.48\",\"3#功率Σ\":\"74.48\",\"3#功率因数Ⅰ\":\"75.48\",\"3#功率因数Ⅱ\":\"76.48\",\"3#功率因数Ⅲ\":\"77.48\",\"3#功率因数Σ\":\"78.48\",\"4#电压Ⅰ\":\"79.48\",\"4#电压Ⅱ\":\"80.48\",\"4#电压Ⅲ\":\"81.48\",\"4#电压Σ\":\"82.48\",\"4#电流Ⅰ\":\"83.48\",\"4#电流Ⅱ\":\"84.48\",\"1#频率\":12.3,\"2#频率\":13.3,\"3#频率\":14.3}";
//        JSONObject reportParam = JSONObject.parseObject(jsonStr);
//
//        for (String key : lst) {
//            // 获取最后一个
//            if(key.equals("系统压力")){
//                for (int i = 1; i <= 12; i++) {
//                    String valueObj = reportParam.getString("系统压力"+i);
//                    if(StringUtils.isNotBlank(valueObj)){
//                        System.out.println(key+":"+valueObj);
//                    }
//                }
//            }else if(key.equals("1#电压")
//                || key.equals("2#电压")
//                || key.equals("3#电压")
//                || key.equals("4#电压")
//                || key.equals("1#电流")
//                || key.equals("2#电流")
//                || key.equals("3#电流")
//                || key.equals("4#电流")
//                || key.equals("1#功率")
//                || key.equals("2#功率")
//                || key.equals("3#功率")
//                || key.equals("4#功率")
//                || key.equals("1#功率因数")
//                || key.equals("2#功率因数")
//                || key.equals("3#功率因数")
//                || key.equals("4#功率因数")
//            ){
//                System.out.println(getLstValue(reportParam,key));
//            }else if(key.equals("频率")){
//                System.out.println(getLstValue2(reportParam,key));
//            }else{
//                if(reportParam.containsKey(key)){
//                    String valueObj = reportParam.getString(key); // 属性的值
//                    if (StringUtils.isNotBlank(valueObj)) {
//                        System.out.println(key+":"+valueObj);
//                    }
//                }
//            }
//        }
//    }
//
//    /**
//     * 16进制字符串转二进制字符串
//     * @param hexStr
//     * @return
//     */
//    private static String hexStr2BinStr(String hexStr){
//        String binStr = "";
//
//        char[] a = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
//        String[] bsd = {"0000", "0001", "0010", "0011", "0100", "0101", "0110",
//                "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
//
//        if(StringUtils.isNotBlank(hexStr)){
//            hexStr = hexStr.toLowerCase(Locale.ROOT);
//            int length = hexStr.length();
//            for (int i = 0; i < length; i++) {
//                char c = hexStr.charAt(i);
//                for (int j = 0; j < a.length; j++) {
//                    if(c == a[j]){
//                        binStr += bsd[j];
//                        break;
//                    }
//                }
//            }
//        }
//        return binStr;
//    }
//
//    /**
//     * 二进制字符串转十六机制字符串
//     * @param binStr
//     * @return
//     */
//    public static String binStr2HexStr(String binStr){
//        String hexStr = "";
//
//        char[] a = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
//        String[] bsd = {"0000", "0001", "0010", "0011", "0100", "0101", "0110",
//                "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
//
//        if(StringUtils.isNotBlank(binStr)){
//            // 向左补0
//            int length = binStr.length();
//
//            if(length <= 4){
//                for (int i = 0; i < 4-length; i++) {
//                    binStr = "0"+binStr;
//                }
//
//                for (int i = 0; i < bsd.length; i++) {
//                    if(bsd[i] .equals(binStr) ){
//                        hexStr += a[i];
//                        break;
//                    }
//                }
//            }else{
//                int y = length % 4;
//                if(y == 0){
//                    int i = length / 4;
//                    for (int j = 0; j <i; j++) {
//                        String sub = binStr.substring(4 * j, 4 * j + 4);
//                        for (int i1 = 0; i1 < bsd.length; i1++) {
//                            if(sub.equals(bsd[i1])){
//                                hexStr += a[i1];
//                                break;
//                            }
//                        }
//                    }
//                }else{
//                    for (int i = 0; i < 4-y; i++) {
//                        binStr = "0"+binStr;
//                    }
//
//                    length = binStr.length();
//
//                    int i = length / 4;
//                    for (int j = 0; j <i; j++) {
//                        String sub = binStr.substring(4 * j, 4 * j + 4);
//                        for (int i1 = 0; i1 < bsd.length; i1++) {
//                            if(sub.equals(bsd[i1])){
//                                hexStr += a[i1];
//                                break;
//                            }
//                        }
//                    }
//                }
//            }
//        }
//        return hexStr;
//    }
//
//    private static String _getAcode(String number){
//        if(StringUtils.isBlank(number)) return "";
//        String aCode = number;
//        if(number.indexOf("T")!=-1){
//            // 从设备编号中获取A码
//            int indexOf = number.indexOf("A");
//            aCode = number.substring(indexOf, 18);
//        }
//        return aCode;
//    }
//
//    private void showException() throws Exception{
//        try {
//            func1();
//            func2();
//        }catch (Exception e){
//            throw e;
//        }
//    }
//
//
//    private void func1() throws Exception{
//
//        throw new Exception(String.format("fun:aaaa %s %d","xxxxx",565757L),new Exception("aaa"));
//    }
//
//    private void func2() throws Exception{
//
//        throw new Exception("fun:bbb",new Exception("bbb"));
//    }
//
//
//    /**
//     * @description 将二进制转换成16进制
//     *
//     * @param buf
//     * @return
//     */
//    public static String parseByte2HexStr(byte buf[]) {
//        StringBuffer sb = new StringBuffer();
//        for (int i = 0; i < buf.length; i++) {
//            String hex = Integer.toHexString(buf[i] & 0xFF);
//            if (hex.length() == 1) {
//                hex = '0' + hex;
//            }
//            sb.append(hex.toUpperCase());
//        }
//        return sb.toString();
//    }
//
//    /**
//     * @description 将16进制转换为二进制
//     *
//     * @param hexStr
//     * @return
//     */
//    public static byte[] parseHexStr2Byte(String hexStr) {
//        if (hexStr.length() < 1)
//            return null;
//        byte[] result = new byte[hexStr.length() / 2];
//        for (int i = 0; i < hexStr.length() / 2; i++) {
//            int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
//            int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
//            result[i] = (byte) (high * 16 + low);
//        }
//        return result;
//    }
//
//
//    //  杜兆麟(duzl1)
//    public static String getFullName(String name) {
//        if(StringUtils.isNotBlank(name)){
//            if(name.indexOf("(") != -1 && name.indexOf(")") != -1){
//                name = name.substring(0,name.indexOf("("));
//            }
//        }
//        return StringUtils.trimToEmpty(name);
//    }
//
//
//    public static String getLstValue(JSONObject reportParam,String key){
//        String value = "";
//        String[] sufx = new String[]{"Ⅰ","Ⅱ","Ⅲ","Σ"};
//        for (int i = 0; i < sufx.length; i++) {
//            String suf = sufx[i];
//            if(reportParam.containsKey(key+suf)){
//                String valueObj = reportParam.getString(key+suf);
//                if(StringUtils.isNotBlank(valueObj)){
//                    value = key+":"+valueObj;
//                }
//            }
//        }
//        return value;
//    }
//
//    public static String getLstValue2(JSONObject reportParam,String key){
//        String value = "";
//        String[] sufx = new String[]{"1#","2#","3#","4#"};
//        for (int i = 0; i < sufx.length; i++) {
//            String suf = sufx[i];
//            if(reportParam.containsKey(suf+key)){
//                String valueObj = reportParam.getString(suf+key);
//                if(StringUtils.isNotBlank(valueObj)){
//                    value = key+":"+valueObj;
//                }
//            }
//        }
//        return value;
//    }
//}
